<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    array = [
      { "id": "1" },
      { "id": "1" },
      { "id": "2" }
    ],
      fn = function (item) {
        return item.id;
      }
    /**
hasOwnProperty是Object.prototype的一个方法
他能判断一个对象是否包含自定义属性而不是原型链上的属性
hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数 
    */
    Array.prototype.groupBy = function (fn) {
      let res = {}
      for (let obj of this) {
        let key = fn(obj)
        if (!res.hasOwnProperty(key)) res[key] = []
        res[key].push(obj)
      }
      return res
    }
    console.log(array.groupBy(fn))
  </script>
</body>

</html>